/**
 * 加法算式子类
 * 实现加法运算的具体逻辑
 */
public class AdditionCalculation extends AbstractCalculation {
    
    /**
     * 构造函数
     * @param operand1 第一个操作数
     * @param operand2 第二个操作数
     */
    public AdditionCalculation(int operand1, int operand2) {
        // 调用父类构造函数，指定运算符为 '+'
        super(operand1, operand2, '+');
    }
    
    /**
     * 实现计算结果的方法
     * 对于加法，确保结果不超过100
     * @return 计算结果
     */
    @Override
    protected int calculateResult() {
        // 执行加法运算
        int sum = operand1 + operand2;
        
        // 确保结果不超过100
        // 在实际应用中，应该在生成题目时就确保这一点
        // 这里进行验证，防止异常情况
        if (sum > 100) {
            throw new IllegalArgumentException("加法结果不能超过100: " + operand1 + " + " + operand2 + " = " + sum);
        }
        
        return sum;
    }
    
    /**
     * 静态工厂方法：创建一个有效的加法算式
     * 确保结果不超过100
     * @return 有效的加法算式
     */
    public static AdditionCalculation createValidAddition() {
        int operand1, operand2;
        
        // 生成第一个操作数（0-100）
        operand1 = (int)(Math.random() * 101);
        // 生成第二个操作数，确保结果不超过100
        operand2 = (int)(Math.random() * (101 - operand1));
        
        return new AdditionCalculation(operand1, operand2);
    }
}